#ifndef _SG_LABEL_H_
#define _SG_LABEL_H_

#include "sg_obj.h"

typedef struct _sg_label
{
    // ------------------------ sg_obj 内容 ------------------------
    sg_coord_t Pos;         // 左上角坐标
    u16 Width;              // 宽度
    u16 Height;             // 高度
    lcd_color_t BgColor;    // 背景色
    sg_st_t Status;         // 状态
    // -------------------------------------------------------------

    const lcd_font_t * Font;      // 字体
    lcd_color_t Color;      // 文字颜色
    lcd_font_mode_t FontMode;
    const char * Text;      // 要显示的字符串
}sg_label_t;

void SgLabel_init(sg_label_t * obj);

/**
 * 设置文字颜色，默认白色,设置后并不会刷新显示。
*/
void SgLabel_setColor(sg_label_t * obj, lcd_color_t color);

/**
 * 设置背景是否透明，默认不透明。设置后并不会刷新显示。
 * 注意：背景透明会导致变化的文字有残影（如果不清除显示），如果需要文字需要变化设置背景不透明。
*/
void SgLabel_setFontMode(sg_label_t * obj, lcd_font_mode_t fm);

/**
 * 设置字体。注意设置后并不会刷新显示。
*/
void SgLabel_setFont(sg_label_t * obj, const lcd_font_t * font);

/**
 * 设置字符内容，将会设置状态为 SG_ST_NORMAL 并刷新显示。
 * 将会依据内容自动设定占用的屏幕尺寸。
 * 内部不会申请内存保存字符数据，因此每次需要重新设置才能更新显示。
*/
void SgLabel_setText(sg_label_t * obj, const char * text);

#endif
